package org.example.market.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.market.entity.Bill;
import org.example.market.entity.BillCountVO;
import org.example.market.entity.RecentBillAmountVO;
import org.example.market.entity.RecentBillCountVO;
import org.example.market.util.DailyAmount;
import org.example.market.util.DailyCount;

import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;

@Mapper
public interface BillMapper {
    // 增删改查方法
    int insertBill(Bill bill);
    int deleteBillById(Long id);
    int updateBill(Bill bill);
    Bill getBillById(Long id);
    List<Bill> listAllBills();

    // 业务扩展方法
    List<Bill> getBillsByProviderId(Long providerId);
    List<Bill> getBillsByIsPayment(Integer isPayment);
    List<Bill> getBillsByPriceRange(BigDecimal minPrice, BigDecimal maxPrice);

    // 新增分页相关方法
    Bill getBillByCode(String billCode);
    List<Bill> findByPage(int offset, int pageSize, String productName, Integer providerId, Integer isPayment);
    int countByCondition(String productName, Integer providerId, Integer isPayment);

    /**
     * 获取今日、昨日、本周、本月账单数量
     * @return 账单数量统计结果
     */
    BillCountVO getBillCounts();

    /**
     * 获取最近7天的账单数量
     * @return 最近7天账单数量列表
     */
    List<RecentBillCountVO> getRecent7DaysBillCount();

    /**
     * 获取最近7天的账单金额
     * @return 最近7天账单金额列表
     */
    List<RecentBillAmountVO> getRecent7DaysBillAmount();
}
